package com.example.d8_homework.homework03;

import java.util.Calendar;
import java.util.TimerTask;

public class TimeTask extends TimerTask {

    // 定义秒杀开始时间
    private long startTime;

    // 构造方法,对秒杀开始时间进行初始化
    public TimeTask() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 6); // 设置为06时
        calendar.set(Calendar.MINUTE, 0); // 设置为00分
        calendar.set(Calendar.SECOND, 0); // 设置为00秒
        calendar.set(Calendar.MILLISECOND, 0); // 设置为0毫秒

        // 判断当前时间是否超过了今天的06.00,如果超过了,则将明天的06.00作为秒杀开始时间
        if (calendar.getTimeInMillis() <= System.currentTimeMillis()) {
            // 说明当前时间超过了今天的06.00,则将明天的06.00作为秒杀开始时间
            calendar.add(Calendar.DAY_OF_MONTH, 1);
        }
        startTime = calendar.getTimeInMillis();
    }

    @Override
    public void run() { // 每一秒执行一次该方法
        // 计算剩余时间
        long remainTime = startTime - System.currentTimeMillis();
        if (remainTime <= 0) {
            // 说明秒杀已经开始了
            this.cancel();
            System.out.println("秒杀开始了！");
            return;
        }

        // 将毫秒值转成对应的时分秒
        int seconds = (int) (remainTime / 1000) % 60;
        int minutes = (int) ((remainTime / (1000 * 60)) % 60);
        int hours = (int) ((remainTime / (1000 * 60 * 60)) % 24);

        // 打印倒计时信息
        System.out.printf("距离秒杀开始还有：%02d小时%02d分钟%02d秒\n", hours, minutes, seconds);
    }
}
